package com.example.springbooteasycode.utils.excel;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFColor;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileOutputStream;
import java.io.IOException;

/**
 * Excel导出标题表格颜色设置：
 * 参考颜色对照表：https://mbd.baidu.com/newspage/data/dtlandingsuper?nid=dt_4160702921057240332&sourceFrom=search_a
 */
public class ExcelExampleXSSF {
    public static void main(String[] args) throws IOException {
        // 创建一个新的工作簿和表
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");

        // 设置第 i 列的宽度
        int columnWidth = 20 * 256;
        for (int i = 0; i < 10; i++) {
            sheet.setColumnWidth(i, columnWidth);
        }

        // 创建一行并设置行高为 20 磅
        Row row = sheet.createRow(0);
        row.setHeightInPoints(20);

        // 创建单元格并写入一些数据
        Cell cell = row.createCell(0);
        cell.setCellValue("Hello, World!");

        // 创建单元格样式
        XSSFCellStyle cellStyle = (XSSFCellStyle) workbook.createCellStyle();

        // 自定义颜色 (RGB)
        byte[] rgb = new byte[]{(byte) 220, (byte) 140, (byte) 0}; // 红色 (R=255, G=0, B=0)
        XSSFColor customColor = new XSSFColor(rgb, null);

        // 根据列索引设置不同的颜色
        if (0 < 6) {
            cellStyle.setFillForegroundColor(customColor);
        } else {
            byte[] rgbYellow = new byte[]{(byte) 255, (byte) 255, (byte) 0}; // 黄色 (R=255, G=255, B=0)
            XSSFColor customYellowColor = new XSSFColor(rgbYellow, null);
            cellStyle.setFillForegroundColor(customYellowColor);
        }
        cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

        // 设置字体
        XSSFFont font = (XSSFFont) workbook.createFont();
        font.setFontHeightInPoints((short) 12); // 设置字体大小为14磅
        font.setBold(true); // 加粗字体
        cellStyle.setFont(font);


        // 应用样式到单元格
        cell.setCellStyle(cellStyle);

        // 将工作簿写入文件
        try (FileOutputStream fileOut = new FileOutputStream("/Users/boykchen/Desktop/exampleXSSF.xlsx")) {
            workbook.write(fileOut);
        }

        // 关闭工作簿
        workbook.close();
    }
}
